手写STM32 FOC记录

您所在的位置:网站首页 pwm 互补 手写STM32 FOC记录

手写STM32 FOC记录

2024-07-10 10:12| 来源: 网络整理| 查看: 265

    本文旨在详细记录学习FOC控制无刷电机的一些个人调试步骤以及心得体会。众所周知FOC是一个比较复杂的控制算法,要完全掌握它,个人认为最好的办法就是一步一步搭建适合自己的软硬件平台。本文硬件使用ST官方提供的NUCLEO-G431RB+ X-NUCLEO-IHM16M1,后续计划参考这套硬件平台制作自己的PCB。硬件有了,软件代码部分从新建工程开始,首先记录最基本的6路互补PWM的产生过程。

一、6路互补PWM的配置

1、时钟配置

使用外部24MHz晶振

时钟频率配置成最快的170MHz

 

我是用的是jlink的SW模式,配置调试方式为SW

 

接下来是最重要的TIM1高级定时器的配置,高级定时器功能很强大,配置相对复杂,且需要针对对应的硬件去做配置。高级定时器主要用于产生6路互补的PWM来驱动MOS管,加入死区防止电源导通,使用刹车引脚。高级定时器1通道1、2、3用于产生6路互补的PWM,通道4用于后续的 ADC 电流采样。引脚配置与PWM极性请根据自己的硬件合理配置

 

配置PWM频率

设置两个与PWM相关的宏定义,便于后续代码修改

 

配置刹车引脚极性,根据实际硬件配置

配置死区时间,根据所选MOS的规格来确定,本文配置的5,计算约290ns

互补PWM极性配置,根据硬件选择,若上PMOS,下NMOS,极性相反 ,如果是上下桥都是NMOS,则需要将极性配置相同,否则上下桥MOS直接连通,电流很大会比较危险。

 

最后配置一个LED引脚,用于指示代码运行状态。

 

最终配置完成之后得硬件引脚分配如下。

生成工程后,应首先对PWM模块进行测试,如果有示波器,先测PWM是否正常,死区时间是否正确。测试时,建议新建.c和.h的测试文件,将要测试的模块都在测试文件中实现,在主函数中调用需要测试的模块即可,这样可以避免后续频繁修改配置文件,导致代码丢失。

 

最终示波器测试,其中的一路互补PWM波形如下



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3